#include "MusicJsonParser.h"
#include <QDebug>
#include <QJsonArray>

QList<SongInfo> MusicJsonParser::parseMusicJson(const QJsonObject &jsonObject, bool &success)
{
    QList<SongInfo> filteredSongs;
    success = false;
    
    // 检查返回码（code=200为成功）
    if (jsonObject["code"].toInt() != 200) {
        qWarning() << "接口返回错误，code：" << jsonObject["code"].toInt();
        return filteredSongs;
    }
    
    // 获取result对象
    if (!jsonObject.contains("result") || !jsonObject["result"].isObject()) {
        qWarning() << "缺少result字段";
        return filteredSongs;
    }
    QJsonObject resultObj = jsonObject["result"].toObject();
    
    // 获取songs数组
    if (!resultObj.contains("songs") || !resultObj["songs"].isArray()) {
        qWarning() << "缺少songs数组";
        return filteredSongs;
    }
    QJsonArray songsArray = resultObj["songs"].toArray();
    
    // 遍历歌曲列表，筛选fee != 1的歌曲
    for (const QJsonValue &songVal : songsArray) {
        if (!songVal.isObject()) continue;
        QJsonObject songObj = songVal.toObject();
        
        // 获取fee字段
        int fee = songObj["fee"].toInt();
        if (fee == 1) continue;  // 跳过fee=1的歌曲

        // 解析歌曲信息
        SongInfo song;
        QString idStr = QString::number(songObj["id"].toDouble(), 'f', 0);
        // qDebug()<<idStr;
        song.setId(idStr);
        song.setName(songObj["name"].toString());
        song.setFee(fee);
        song.setDuration(songObj["duration"].toInt());
        
        // 解析歌手信息
        QString artists;
        if (songObj.contains("artists") && songObj["artists"].isArray()) {
            QJsonArray artistsArray = songObj["artists"].toArray();
            if (!artistsArray.isEmpty() && artistsArray.first().isObject()) {
                for(QJsonValue artistObj:artistsArray){
                    artists += artistObj.toObject()["name"].toString()+" ";
                    song.setArtist(artists);
                }
                // song.setArtist(artistsArray.first().toObject()["name"].toString());
            }
        }
        
        // 解析专辑信息
        if (songObj.contains("album") && songObj["album"].isObject()) {
            song.setAlbum(songObj["album"].toObject()["name"].toString());
        }
        
        // 添加到筛选列表
        filteredSongs.append(song);
    }
    
    qDebug() << "筛选完成，符合条件的歌曲数量：" << filteredSongs.size();
    success = true;
    return filteredSongs;
}
